/**
 * 线程终止：
 * 1.当线程完成任务以后，会自动退出。
 * 2.还可以通过使用变量来控制run()非法退出的方式停止线程，即通知方式
 */
public class InformThreadQuit {
    /*
       需求：启动一个线程T,要求在main线程中去停止线程T
     */
    public static void main(String args[])  {
        T t = new T();
        t.start();

        //2.如果希望main线程去控制T线程的终止，必须可以修改Loop
        //让T退出run()方法，从而终止T线程 -->通知方式

        //让主线程休眠10s，再通知T线程终止
        try {
            Thread.sleep(10*1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //设置控制变量的值
        t.setLoop(false);
    }
}

class T extends Thread
{
    private int count=0;
    //1.设置一个控制变量，提供set方法
    private boolean loop = true;
    @Override
    public void run() {
        while (loop)
        {
            System.out.println("T 运行中----"+(++count));
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    public void setLoop(boolean loop)
    {
        this.loop = loop;
    }
}
